home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48_2 / chess < prev    next >
Internet Message Format  |  1995-03-31  |  44KB

  1. Path: seq!spell
  2. From: Pauli <grue@cs.uq.oz.au>
  3. Subject:  v01i050:  chess - Chess v1.0 (includes HP28 source), Part01/01
  4. Newsgroups: comp.sources.hp48
  5. Keywords: chess
  6. Followup-To: comp.sys.hp48
  7. Summary: The chess program for the hp28/48
  8. Approved: spell@seq.uncwil.edu
  9.  
  10. Checksum: 4154390022 (verify with brik -cv)
  11. Submitted-by: Pauli <grue@cs.uq.oz.au>
  12. Posting-number: Volume 1, Issue 50
  13. Archive-name: chess/part01
  14.  
  15.  
  16. BEGIN_DOC chess.doc
  17. hi,
  18.     Due to rather heavy demand for my chess program for the 48, I've
  19. decided to post it in its current incomplete form.  I am not intending to
  20. improve this program in the near future.  If I ever write another chess
  21. program for the 48, it will be machine code rather than RPL but don't
  22. wait for it to appear.
  23.  
  24.     Briefly, to make a move enter the start coords and the finish
  25. coords of the piece being moved (e.g. e2e4 is the same a P-K4 in the initial
  26. position).  To give up early enter 'quit', to pause the game enter 'halt'
  27. and to swap colours enter 'swap'.  All entries (moves or special commands)
  28. must be followed by the enter key.  If you make an error, you can type in
  29. the new command right away...the program only keeps the last four characters
  30. typed.
  31.  
  32.     After you type enter, be ready for a long wait.  The program is very,
  33. very slow.  Some of my debugging messages are still in place and they relieve
  34. the boredom a little.  The program doesn't play a very good game, and it
  35. plays very slowly.  I originally wrote this just to prove that it could be
  36. done (that was back on a HP28S).  It was my first large programming effort
  37. for the 28 and I've learnt a lot since then about how RPL works and I would
  38. not write the program the same way if I was writing it now.
  39.  
  40.     Thanks to Eddie (lost your e-mail address sorry) for converting the
  41. graphics from the 28 version to the 48 version.  The actual play should be
  42. the same between the two versions.
  43.  
  44.  
  45.                                 Pauli
  46.  
  47. Paul Dale               | Internet/CSnet:            grue@cs.uq.oz.au
  48. Dept of Computer Science| Bitnet:       grue%cs.uq.oz.au@uunet.uu.net
  49. Uni of Queensland       | JANET:           grue%cs.uq.oz.au@uk.ac.ukc
  50. Australia, 4072         | EAN:                          grue@cs.uq.oz
  51.                         | UUCP:           uunet!munnari!cs.uq.oz!grue
  52. f4e6g4Qh4++             | JUNET:                     grue@cs.uq.oz.au
  53.  
  54. END_DOC
  55.  
  56.  
  57.  
  58. For the HP48:
  59.  
  60. BYTES: #36C2h 9166
  61.  
  62. BEGIN_UU chess.uue
  63. begin 666 chess
  64. M2%!(4#0X+4&6*O!_HT0````$4%!!4@1T*G"7`@$``````&"6`````````)9W&
  65. M*1````````!D$````````%>`Y`((8V]N<W1A;G3)HG*7`@``````````````2
  66. M``````!AYH'D`@%9*S'P"@`#:V5Y`YTMX&$C="I`IP(L*G```&$L*G```&(L=
  67. M*G```&,L*G```&0L*G```&4L*G```&8K,4"G`BPJ<```9RPJ<```:"PJ<```D
  68. M:2PJ<```:BPJ<```:RPJ<```;"LQ0*<"+"IP``!M+"IP``!N+"IP``!O+"IPC
  69. M``!P+"IP``!Q+"IP``!R*S%`IP(L*G```',L*G```'0L*G```'4L*G```'8LZ
  70. M*G```'<L*G```'@K,4"G`BPJ\```14Y415(L*G```'DL*G```'HL*K```$1%F
  71. M3"PJT```0D%#2RLQ0*<"+"I0```L*G```#<L*G```#@L*G```#DL*E```"LQJ
  72. M0*<"+"I0```L*G```#0L*G```#4L*G```#8L*E```"LQ0*<"+"I0```L*G``7
  73. M`#$L*G```#(L*G```#,L*G```"TK,4"G`BPJ4```+"IP```P+"IP```N+"IPP
  74. M```@+"IP```K*S&P$@-SJ,%)(YTMX&$C,RD0````````$%#P&H?[T;8;O?LQ+
  75. MNALS*1`````````0X-X:\Z("S1_&U]&['\;7,>PBA_N!FQSZ+I(L*K4OTMD"K
  76. MV/M!*RHK,5#](CDVLA(#G#32V0(>-H*]'[2BDF,C*S'@/QHY-K(2`[(#4#!%,
  77. M)21%5,"B`OT!L'4#<@-R`W(#<@-R`W(#<@-R`W(#<@-R`W(#<@-R`W(#<@-RN
  78. M`W(#<@-"`R(#,@-2`V(#,@,B`T(#<@-R`Q(#$@,2`Q(#$@,2`Q(#$@-R`W(#A
  79. M`@,"`P(#`@,"`P(#`@,"`W(#<@,"`P(#`@,"`P(#`@,"`P(#<@-R`P(#`@,"P
  80. M`P(#`@,"`P(#`@-R`W(#`@,"`P(#`@,"`P(#`@,"`W(#<@/2$@/2$@/2$@/2?
  81. M$@/2$@/2$@/2$@/2$@-R`W(#TD(#TB(#TC(#TE(#TF(#TC(#TB(#TD(#<@-R*
  82. M`W(#<@-R`W(#<@-R`W(#<@-R`W(#<@-R`W(#<@-R`W(#<@-R`R$`!T524D)%5
  83. M3$P'G2W@82,S*2````````!$,),"F0D```````'$I9%C(RLQ4`4`!$9)3E`$;
  84. MG2W@82/>HD(G'"PJD`$`66]U<B!M;W9E/\FB@N0"`T1)4T@N,)#D!.4M*D@NE
  85. M,$"4-#4#(]ZB,C$<73""Y`(%:6YP=724-L*B`AD```("`@("`@("`I(L*D@NU
  86. M,$"4-)5C(RLQ,`T`!6EN<'5T!9TMX&$C,S""Y`(#:V5Y73#2V0+!--+F`@)S)
  87. M=!XV,NPB;2X@,$>'FQS)HA)V'OHNTMD"2"XPD.0$Y2TJ"*/"A1QM+B`P1W>VE
  88. M&E0V@N0"`TE.4'DVTLP@*S%0^R*=+3#L(FTN(#!'QZ("#P!0Y$15)!5V'OHNB
  89. MTMD"WJ)2+1PK,5#[(ITM,.PB;2X@,$?'H@(+`$!4Q!1V'OHNTMD"+"K0``!?;
  90. M7U]?5#:"Y`(#24Y0>3;2S"`K,5#[(ITM,.PB;2X@,$?'H@(-`"`4-+04=A[Z?
  91. M+M+9`BPJ<```7T@N,)#D!)4L*O.BPH4<9ZM!92-(+C"0Y`259R/-#+(2`]4O]
  92. MLA(#U2^R$@/5+[(2`]4O@N0"`TE.4-ZB@N0"`T1)4_XULA(#E#:28R,K,;`E+
  93. M``-$25,#G2W@82/)HI+0&C,I$````````!#@WAJ]^^$M*JWET;L?,RD0````H
  94. M````5]"['PFM,9,"`0``````8):]^^%Y'+W[84,>\Z("S1_JR)%C(RLQT`H`>
  95. M!$U/5D4$G2W@82,RHU(M'"PJ4`$`("`@("`@("#SHH+D`@-$25,L*M```"`@*
  96. M("`(HX+D`@-$25/#+H+D`@-)3E`L*M```'%U:71RZ:'O(ITMD"PJ=,*Q$@.U0
  97. M+]+9`L,N@N0"`TE.4"PJT```:&%L='+IH>\B<C12^R*=+3#L(D@N,)#D!,6B=
  98. M`@T`,'<7!B>7'OHNTMD"PR[2,2J'^S$Q'/HN4BT<M2]")QS5+R(S*G3",9,"-
  99. M`@``````&0%(+D``M>1TE-`:,RD@``````"0$8#D`@1#2TY'":U!92-(+D``\
  100. MM>1TE&<CS0Q"92-(+D`PM.1TE&<CS0R"Y`($1%)70BLQ4/LB2"Y``,749%7]@
  101. M(L,N(C,J$\.A[R)(+D`P!-5D5?LBG2W`H@(=`)#$QE9V%L8&TO9F5R8S*D@N`
  102. M,$"4-(7D`@=%4E)"14Q,*S%0_2(K,5#](BLQ4/TB.3:R$@.\`D!`)'4E1-#9R
  103. M`AXV,I,"`0``````$`+!--+F`@%N'C9REP(``````````0`````````!,S`R$
  104. MDP(!``````"0"6TN$."VV1Y=,-+9`FTN$.`V["(=HS(Q'/HNTMD",RD@`````
  105. M``"0$="['PFML1(#U2^"Y`($0D1'5(?[\:$:O?NA,AO!--+F`@%P;2XP,/;&#
  106. MYF$CPR[2Y@(!<$>CTJD>^B[2V0*'^V%#'KW[X:0"%0"``````````."D`A4`1
  107. M@`````````!@01[#+M+F`@%NA_LQDP(!`````````06OT;8;9ZOA+2I-OJ'O>
  108. M(I6I4?TBZLBQ$@/5+S+L(FTN$`!'*RJ=ZJ'O(ITM,.PB;2X0`'<T*F'GH>\B.
  109. MG2UPEP(!````````E``````````$9ZNQ$@.U+]+9`H?[,>PB;2X0X':X'S,I*
  110. M$````````!!0\!IMNW&V&MZBTN0;A_O1Y@(#8V]LAJ,2=A[VZ*'O(MZB4OLB^
  111. MR:)2_2)(+C!@E'34NQ_&U]'F`@%PQM=A0QX(HP+-'[W[P4DCG2W@82/DY)%CF
  112. M(RLQP$DCG2W@82-6Y)%C(RLQX#\:*S%0_2(K,5#](OXU<I<"``````````@`;
  113. M`````````&>KT>8"`6[)HG*V&E0VTN8"`6YY-M+,("LQ0&DCV/OA7R,Y-K(28
  114. M`^\#0"!$=$1%T-D"'C9"92-(+C`@)$649R.]^V%\'3DVLA(#00`P($4D,]#9J
  115. M`AXV,I,"`@````````'NK=&V&S,I(````````!!0\!HY-K(2`U<`8##T]"1%Q
  116. M-&70V0(>-C*3`@$````````!!:]QN!]MNY$L*@FMT;L?H[LQDP(!````````R
  117. M`>ZMX7D<.3:R$@-[`%!0Y31D1570V0(>-C*3`@$````````!!:]QN!]MNY$LC
  118. M*@FML;`<O?LQNALS*1`````````0X-X:+"I0`0!A8F-D969G:+W[<;@?7,C1O
  119. MNQ]GJY%C(RLQP`H`!E-(3U=-5@:=+>!A(X[)@>0"!55.0U94O?N!Y`(%54Y#D
  120. M5E2]^W&V&@BC@N0"`T1)4]C[D6,C*S$0!P`%359'14X%G2W@82/SHE(M''0JY
  121. ML!(#A_L13"-M+A``U^8"`G-Q;2X@@$?G82-M+A``A^0"!$)$1U2'^Z$R&[W[I
  122. M\:$:G#32V0(>-M+F`@)X=&>K064C;2X@@$>79R/-#-+F`@%PO?OA>1QM+B`P`
  123. M%W>V&E0VTN8"`G-Q>3;2S"`Y-K(2`\$TTN8"`V-O;&TN,``W5M;F`@5A9&UO7
  124. M=AXVPDDCG2W@82-M+A``=[8:A_N!Y`($0D1'5(?[<;@?A_LQ["+Z+M+9`O.B;
  125. M0B<<*S%0_2+#+G(T*IWJT;L?*K/1Y@(#8V]LG>HQ>![Z+M+9`L,N<K@?C^BA/
  126. M[R*=+8"]'T6KL1(#M2_2V0+)HM*['Y['L1(#U2_2Y@(%861M;W:^H[$2`[4OE
  127. M,K\?U2^28R,K,1!,(VTN,#"&MN9A(YPTTMD"'C9BLAP#,4(K*L,PDL(?9ZMQ=
  128. MN!]M+C`PAK;F.QKM,#(O*J'$D6LC\_O!)",Y-K(2`\$TTN8"`VUM=AXV0J<"B
  129. MG2W@82.<--+9`AXV$DPC;2XP0/<VYV$CPR[2Y@(#=&]S,RD0````````$%#PC
  130. M&FV[<;@?WJ(2=AZ]^Q$W*F'GD8`>^B[2V0+>HM(Q*J`QTN8"`6UM+C!`]S9W[
  131. MN!](+D`@1'1$U>8"`6UM+C`P]L;FWAHS*1`````````0<+8:O?OA>1QM+E`0.
  132. M1M;V9N<[&DPR0BLJ*S%0^R*=+=#F`@-T;W/)HK(2`]4OXE\C.3:R$@/!--+FJ
  133. M`@=P<F]M;W1E'C;"22.=+>!A(X?[,>PBA_N!Y`(%15!33E1AYZ'O(ITM4+0::
  134. ME:G1Y@(%861M;W:^HX&]'RLQ4/LBG2TP[")(+D`@1'1$=;@?A_MQ-"J=ZM&[D
  135. M'RJST>8"`V-O;&>K\8@>@^>A[R*=+="['\,NTN8"!W!R;VUO=&6^HZ'O(ITM$
  136. MD"PJ#OSA>1QM+E`01M;V9N<[&BLQ4/LBV/M1_2(K,5#[(O/[4?TB*S%0_2(Y,
  137. M-K(2`\$TTN8"!F-A<&-H:QXV,I,"`0````````%M+C`P]L;FWAIM+A``=[8:`
  138. MA_MQN!_#+H+D`@1"1$=4^BZ"O1^U+]+9`L,NTN8"!W!R;VUO=&6^HZ'O(ITMT
  139. M4+0:;2Y0$$;6]F;G.QHK,5#[(MC[4?TBPR[2Y@(!<#,I$````````!!0\!IMX
  140. MNW&X'_.B$G8>O?O!-2IAYY&`'OHNTMD",RD0````````(-#F`@-C;VSNK='FY
  141. M`@%P9ZMQN!_#+H+D`@1"1$=4^BZ"O1^U+]+9`MZB@N0"!4504TY4GL?1Y@(%\
  142. M861M;W:^H[$2`]4OLA(#U2^R$@/5+Y(L*J+[<;8:;2Y@,!8&-X:VYCL:":W1:
  143. MY@(&8V%P8VAKOJ/A7R/^-9)C(RLQT-D"'C;"H@(_`(`#TH(#$B,#TA(C`Q*3H
  144. M`](2DP,B$P/2(A,#$@."8[(<`S'2Y@(#8VAKOJ/!)",Y-K(2`YTMX&$C+"HP!
  145. M`@`Y("TY(#$Q("TQ,2`Q(#1M+C#0UF;G.QHY-K(2`YTMX&$C+"HP`@`Q("TQ%
  146. M(#$P("TQ,"`Q(#1M+C#0UF;G.QHY-K(2`YTMX&$C+"JP`P`Q("TQ(#D@+3D@"
  147. M,3`@+3$P(#$Q("TQ,2`Q(#AM+C#0UF;G.QHY-K(2`YTMX&$C+"JP`P`Q("TQ8
  148. M(#D@+3D@,3`@+3$P(#$Q("TQ,2`Q(#@FRS$0(VTN,#"&MN8[&DPR,NPB;2X08
  149. M`#>3`@$``````%`"8>?1Y@(!<#,I$````````)40=AX)Z*'O(ITM,.PB;2X0,
  150. M`)<L*F>K@>0"!$)$1U2/Z-'F`@%PWJ)RMAI(+D`@1'1$]8@>@^?1Y@(!</.B$
  151. M<K8:2"Y`($1T1/6A&@BC$G8>@^>A[R*=+=#F`@%PWJ)RMAIM+A``-R\J9ZO1$
  152. MY@(!<,FB<K8:GL?1Y@(%861M;W:^H[$2`]4O,NPB;2X0`)<L*@FM@>0"!$)$J
  153. M1U2/Z-'F`@%PWJ*2T!I(+D`@1'1$]8@>@^?1Y@(!</.BDM`:2"Y`($1T1/6(9
  154. M'H/GT>8"`7`(HY+0&D@N0"!$=$3UH1H(HQ)V'H/GH>\BG2W0Y@(!<-ZBDM`:W
  155. M;2X0`(<P*@FMT>8"`7#)HI+0&I['T>8"!6%D;6]VOJ.Q$@/5+[(2`]4ODF,C;
  156. M*S&P$@-M+C``-U9F?!V^H^%?(_XUXE\C;2X@@$?7Y@("<W'^-9)C(RLQD,P`]
  157. M!4%,3$U6!9TMX&$C="JP$@.'^Q%,(VTN,##VQM;F`@)S<6TN((!'YV$C,RD0-
  158. M````````(3"3`@$``````(`)H#'2Y@(!;L,NTN8"`6Y(+D`@1'1$=;@?*K/10
  159. MY@(#8V]L8>?1NQ]'H]*I'H/GH>\BG2W0Y@(!;D@N4-!D=53DU.8"`G-Q9ZM!(
  160. M92-M+B`P%Y=G(\T,TN8"`GAT9ZM!92-M+B"`1Y=G(\T,LA(#U2_")"-M+B"`2
  161. M1]?F`@)S<?XUDF,C*S%0&``$4$Q-5@2=+>!A(PBC4BT<2"XPD.0$A>0"!D-6>
  162. M4E1344@N,)#D!#4O*@BCPH4<2"Y@,&0E1345%4PC;2XP8"8WU^8"`W1O<QXV:
  163. M,NPB"*,"-AQM+C!@)C>'Y`($0D1'5(?[02LJ7>S1NQ]'H]*I'H/G,7@>^B[23
  164. MV0)M+C!@)C>'Y`(%359'14YM+C!@)C?7Y@(#=&]SGL=!JQR'^S'L(K2B$G8><
  165. M^BZ"O1^U+]+9`L;7T>8"`V9R<VTN,$#W-N=Y'*+[@>0"!$U+359(+F!`E#0%5
  166. MU60E,RITPK$2`]4OLA(#U2_B7R,Y-K(2`](!8#!D)44U%670V0(>-G*X'\FBS
  167. M<K@?7,C!H@(5`!`F-D969G:&UKL?M,K1NQ_>HG*X'US(P:("%0`0(S-#4V-SC
  168. M@].['[3*$4PC;2X0@-?F`@%Y'C8R[")M+A"`]X@>;2X0D/>('@GHH>\BG2V`S
  169. M,"ITPK$2`[4OTMD";2X0@#>3`@$````````!A_O1Y@(!>>ZM<;8:9ZNQ$@/5>
  170. M+^)?(SDVLA(#0P%`T+349$70V0(>-A),(VTN((!'U^8"`G-Q'C;2Y@("<W&.W
  171. MR='F`@)X=([)$4PC;2XP8"8WU^8"`W1O<VTN$$#7Y@(!>AXV,NPB;2XP8"8WH
  172. MA^0"!%!+3D=AYZ'O(ITMT.8"`W1O<U0V@N0"!%!+3D=Y-M+,("LQ4/LBG2TP,
  173. M[")M+C!@)C>'Y`($0TM.1V'GH>\BG2W0Y@(#=&]S5#:"Y`($0TM.1WDVTLP@%
  174. M*S%0_2(K,5#](E0V@N0"`T)21'DV<K@?;2XP8"8WA^0"!$)$1U2'^W&X'RJS<
  175. MT;L?'ZH13"-M+C`P]L;6Y@($<'1Y<!XVTN8"`W1O<[W[<4`=;2XP8"8W1RLJ+
  176. MA_M!92-(+E!0!#7E1)5G(\T,<D`=PR[2Y@(">'1%J]&I'OHNTMD"PR[2Y@(!L
  177. M=,FB$G8>^B[2V0)M+A"@A^0"!$=434Q(+E#01%4%1;02`[4OTMD"PR[2Y@(!)
  178. M=-ZB$G8>^B[2V0)M+C!@)C<WDP(!`````````6TN,##VQN;>&F>K064C2"Y0[
  179. M4`0UY4259R/-#+(2`[4OTMD"PR[2Y@(!=(_HH>\BG2U`92-(+C`@)$649R-M7
  180. M+C!`]S8WDP(!`````````6TN,##VQN;>&@FM02LJ!]31Y@(#8V]LE:F!Y`($X
  181. M1U1-3$@N4-!$505%M!(#M2_2V0+#+M+F`@%T,RD0````````(-#%'OHNTMD"[
  182. M5#:"Y`(#0E)$>39RN!]M+A"@U^8"`71(+D`@1'1$=4`=;2X00$<K*@?4L1(#0
  183. MM2_2V0)M+A"@A^0"!$=434Q(+E#01%4%141E(T@N,"`D191G(VTN,$#W-M?F(
  184. M`@%T,RD0````````$)#0&H?[@>0"!$=434QM+C`P]L:&Y`($1U1-3+W[D=`:<
  185. M2"Y0T$15!45T0!TK,5#](BLQ4/TB*S%0_2(K,5#](BLQ4/TB_C7B7R/^-9)C`
  186. M(RLQ`%D`!4U455!$!9TMX&$CA_M!92-(+D#01"7$E&<C2P2"Y`(%4T-54$0YJ
  187. M-K(2`U8`4#`U5`5%5-#9`AXV0F4C2"Y0,#7T)%649R-+!))C(RLQ(`0`!$=4_
  188. M34P$G2W@82.'^Z$R&[W[\:$:P332Y@(#8V]L;2XP`#=6YF$CZ"E`!P`S*1``5
  189. M``8``````````!````````!0,@`````````U`````````%``````````D"``-
  190. M```````2T.8"`W!C9=\S8GP='S?2V0+S^T$K*BLQ4/LBG2W0Y@(#8V]L[JVQQ
  191. M$@/5+^)?(SDVLA(#+`%@4.74M-1D9=#9`AXV$DPC;2X@@$?7Y@("<W$>-M+F-
  192. M`@)S<8[)T>8"`GATCLD13"-M+C!@)C?7Y@(#=&]S;2X00-?F`@%Z'C9"92-(H
  193. M+C`@)$649R.'^]'F`@-T;W-(+D`@1'1$=;@?*K,13"-M+C`P]L;F82-M+C!@@
  194. M)C?7NQ\'U-'F`@-T;W.THG)`'<,NTN8"`W1O<T@N0`"UY'04=A[Z+M+9`FTN_
  195. M,&`F-T=E(T@N0`"UY'249R/-#+(2`[4OTMD"PR[2Y@(#=&]S2"Y`,+3D=!1V.
  196. M'OHNTMD";2XP8"8W1V4C2"Y`,+3D=)1G(\T,LA(#U2^R$@/5+S+L(FTN((!'+
  197. M5[0:G>JA[R*=+3#L(FTN$$"7+"IAYZ'O(ITMT.8"`7I(+D!P1-7$5)D:2"Y0%
  198. MT$15!45$92-(+C`@)$649R-M+C!`]S;7Y@(!>@?4L1(#M2_2V0+#+M+F`@%T0
  199. MWJ(2=A[Z+M+9`FTN$*!'92-(+E!0!#7E1)5G(\T,LA(#M2_2V0+#+M+F`@%T]
  200. MC^BA[R*=+4!E(T@N,"`D191G(VTN,$#W-C>3`@$````````!;2XP,/;&YMX:C
  201. M":W1Y@(#8V]LE:EQ0!UM+C`P]L:&Y`($1U1-3$@N4-!$505%M!(#M2_2V0+#M
  202. M+M+F`@%T,RD0````````(-#%'OHNTMD"5#:"Y`(#0E)$>39RN!]M+A!`U^8"@
  203. M`7I(+D`@1'1$=4`=;2X0H$<K*@?4L1(#M2_2V0)4-H+D`@-"4D1Y-G*X'VTN8
  204. M,&`F-]?F`@-C;VP'U-'F`@-T;W-M+A!`-Y,"`0````````$)K7&X'T@N0'!$[
  205. MU<34Y@(!>D@N0'!$U<24T!IM+C`P]L:&Y`($1U1-3`FM@>0"!4U455!$!]2QD
  206. M$@/5+[(2`]4OLA(#U2^R$@/5+[(2`]4OXE\C_C7B7R,Y-K(2`W,%0#`$U61%@
  207. MT-D"'C;RK1J&HS+L(AVC,C$<^B[2V0*5J=&['Y6IT;L?*S%0_2)(+F`P510DE
  208. M-82$O1\L*C`!`$UY(&UO=F7SHH+D`@-$25.B^X'D`@932$]735:B^X'D`@1-@
  209. M2TU62"Y@0)0T!=5DA>0"!T524D)%3$PY-K(2`_<`4'!41-5D5=#9`AXV$DPC7
  210. M;2X0X.9A(VTN$.!F?!V]^]'F`@%NQM?1NQ_^-9)C(RLQ``8`!U-#3U)%358'!
  211. MG2W@82/#+H+D`@-03%E(+D!`!$6%))<>^B[2V0+S^X'D`@530T]212LQ4/LB0
  212. MG2U0F1I(+F`P510D-83DP!\._#&_'RLQ4/TB.3:R$@.L`&`P510D-81DT-D"'
  213. M'C:B^B#8^Y$L*E0V@N0"`U!,67DVLD0@P332Y@(";#%M+C`P]L;F82/?JM'FH
  214. M`@-C;VSNK4&G`D6K4;0:*S$03"-M+B#`)M/F`@1B97-T'C;2Y@(#8V]L2"Y05
  215. M$,3$U&2%Y`(&4T]25$U6A_N!FQS#+M+F`@-C;VRTHM+%'OHNTMD"G#32V0(>-
  216. M-K+9'CDVLA(#G#32V0(>-N*['CDVLA(#*S%0^R*=+<!)(YTMX&$C_.R18R,KN
  217. M,<!)(YTMX&$C7>R18R,K,;`2`]4O$DPC;2X@@$?7Y@("<W%M+A#@UN8"`F,Q7
  218. M;2X@,";C82/#,-+F`@)X=&TN$.!F?!UM+B`P%]?F`@%NQM<ANA](+D#0M-1D6
  219. MU>8"`6Y(+F!`5B96=S9WN!^.R=&[']C[<;@?2"Y0T&1U5.2$O1^XR3&3`@(`\
  220. M```````"!:_1NQ](+F`P]/0D131UN!]W*0````````!%`````````$60T!H?[
  221. MJC&3`@$````````![JV!)QM(+C`@1233NQ]M+C`P]L9&*RI=[('D`@1#2TY'5
  222. M2"Y``+7D=.0_&D@N8##T]"1%-)70&A^J,9,"`0````````'NK9$L*F>K@2<;R
  223. M2"XP($4D<[8:9ZO1Y@(#8V]L[JUQN!^5J8'D`@530U501`[\X<`?,RD0`````
  224. M````$M#F`@-C;VSNK='F`@-C;VQ(+G`P-?0D5=1D->PBR:*B[R*=+7"X'PO+8
  225. MP:(""0```G*V&C*C@N0"`T1)4RLQ4/TBPRYRN!]M+B#`%M/F`@)C,;ZCH>\B,
  226. MG2W`-2K5PC'L(H?[T>8"`FPR;2X@,";C.QKZ+M+9`E0VTN8"`FPR>3;2S""BK
  227. M^S'L(D@N,`#%E)4L*F'GH>\BG2T@NA](+F`PA?1TU62U$@/5+^(M*H/'064CG
  228. M;2Y`(%8V1Y=G(\T,LA(#M2^"O1_5+[(2`[4OTMD"5#;2Y@(";#)Y-M+,(%RC]
  229. M0B<<*S%0_2)M+A#@EBPJ":UQN!]4-M+F`@%N>3;2S"##+O*('OHNTMD"7*-"$
  230. M)QPK,5#](D@N8%#EU+349(7D`@530U501.TPPC4J$\.1:R/^-=+F`@1B97-T:
  231. M6LF!O1]M+B#`)N-?(_XU0F4C2"XP`,64E6<CR:*"4R`Y-K(2`[,&8##U)$75S
  232. M9&70V0(>-A),(VTN((!'U^8"`G-Q'C9"IP(K,9`L*C,I$````````"(P$".'I
  233. M^\$D(S,I$````````"$P>!R'^Q%,(VTN,("'1M?F`@-S:'0>-I(L*FTN((!']
  234. MAYL<H#'2Y@(!;FTN,("'1M?F`@)X=&TN$.!F?!V'^^&8'-C[,>PBA_LQDP(!Y
  235. M``````"``5WLH>\BG2V`O1\S*1`````````8L!(#U2^2+"IGJW&X'VTN,("'#
  236. M1M>['\;7X<`?9ZN1PA]M+C`PAT;7NQ^B^V%\'6TN(#`7U^8"`6[&UW&V&@?41
  237. M064C;2XP,(=&EV<CS0QR0!U4-M+F`@-X:'1Y-M+,($PR0F4C;2X@@$>79R/-:
  238. M#$)E(VTN(#`7EV<CS0S"H@)'`&`#$F,#D@,2,P."`Q)#`W(#$E,#(@,B`P,RP
  239. M`Q(#$@,2(V.R'`,QTN8"`GAT;2XP@(=&-R\JFOQA?!UGJT%E(VTN((!'EV<CE
  240. MS0S2Y@("<W%M+C`PAT;GP!_&UW&V&E0VTN8"`G-Q>3;2S"!,,M+F`@)X=&TN]
  241. M(#`7YU\C_C628R,K,0`U``9D96)U9W,&G2W@82/!--+F`@%N'C9RN!^.R8'D7
  242. M`@553D-65+W[@>0"!55.0U94O?MQMAI(+C``Q92UL!PL*G```"!GJ]'F`@%ND
  243. M"\MQMAHL*G```"!GJ]&['V>KP:("!P``<K8:':."Y`(#1$E3_C628R,K,;`.J
  244. M``-&24<#="I`IP(>*_`!``@`@``````\)"0D/``>*_`!``@`@````#QF0G)&G
  245. M?``>*_`!``@`@````!PT)&9"?@`>*_`!``@`@````'Y:0D)"?@`>*_`!``@`X
  246. M@````'Y:9D)"?@`>*_`!``@`@````#QF0F9"?@`K,4"G`AXK\`$`"`"`````3
  247. M```8&!@``!XK\`$`"`"``````!@\##@``!XK\`$`"`"```````@8&#P``!XKA
  248. M\`$`"`"``````"0\/#P``!XK\`$`"`"``````"08/#P``!XK\`$`"`"`````)
  249. M`!@\&#P``"LQL!(#V`%@0)0T!=5D9=#9`AXVXI@<P332Y@(#9G)S;2XP0/<VW
  250. MYV$C-N31Y@(#9G)S2"Y@,/3T)$4TY9@<O?OA>1Q<H^+>&G<I`````````'``'
  251. M````````<)#0&DXJ4`$`"`````````!.*E`!``@`````````%N0Q[")M+C!@P
  252. M)C=WN!\S*1`````````04/`:;;MQMAK>HM+D&_HN4ID:U2^BCAQM+C!`]S:'W
  253. MY`($0D1'5(?[\:$:O?NA,AO!--+F`@%P;2XP,/;&YF$C-N31Y@(#=&]S2"Y@B
  254. M,/3T)$4TY9@<O?OA>1Q<H^+>&G<I`````````'``````````<)#0&J+[X:0"S
  255. M%0"``````````."D`A4`@`````````!@01[#+M+F`@-T;W.'^S&3`@$`````\
  256. M```!!:_1MAMGJ^$M*DV^H>\BE:E1_2+JR#'L(FTN,$#W-G>X'S,I$```````O
  257. M`!!0\!IMNW&V&MZBTN0;A_O1Y@(#8V]LAJ,2=A[VZ*'O(MZB4OLBR:)2_2)(2
  258. M+C!@E'34NQ_&U]'F`@%PQM?1NQ^<--+9`AXV0DX>.3:R$@.<--+9`AXV8D4>.
  259. M.3:R$@/^H^%?(_XU@KT?.3:R$@./`T``QQ:61]#9`AXVDF$<5#:"Y`($1DQ'J
  260. M4WDVTLP@2"Y0,$4E)$6T]QQ4-H+D`@-"4D1Y-M+,("PJ,`<`,B=$4%1()S`G>
  261. M4$Q9)S`G351"3"<P)T504TY4)S`G4T-/4D4G,C4G4$M.1R<Y-2=#2TY')S$@@
  262. M-WO/,1`CS0S")"-T*N"D`A4`0#\0$&0P``3@I`(5````````````L!(#?\;A]
  263. MI`(5`#`(````````X*0"%0``!````````&!!'C;DT<P@="K@I`(5````````A
  264. M````X*0"%0```````````+`2`_#B@>0"!$125T+#,,*B`@T`\/7U]45E(T@N$
  265. M,)#D!)5G(\T,XBTJ=,*!Y`($1DE.4$@N0-#T9%6D^B#8^]$.(\FB,C$<N3:"(
  266. MY`($1DQ'4W_&P:(":0"P9\1T-`5"!$6%!`+%E`4B)$4$DN0$!=)$)<0$,C7T1
  267. >)%4$`K7D=`0RM.1T!%($->5$U;?W'/X.DF,C*S$`E
  268. ``
  269. end
  270. END_UU
  271.  
  272.  
  273. BEGIN_ASC chess.asc
  274. %%HP: T(3)A(D)F(.);
  275. "69A20FF73A4400000040050514254047A2077920100000000000066900000000
  276. 00000069779201000000000000460100000000000075084E208036F6E6374716
  277. E6479C2A27792000000000000000000000000000000000166E184E201095B213
  278. 0FA00030B6569730D9D20E163247A2047A20C2A207000016C2A207000026C2A2
  279. 07000036C2A207000046C2A207000056C2A207000066B213047A20C2A2070000
  280. 76C2A207000086C2A207000096C2A2070000A6C2A2070000B6C2A2070000C6B2
  281. 13047A20C2A2070000D6C2A2070000E6C2A2070000F6C2A207000007C2A20700
  282. 0017C2A207000027B213047A20C2A207000037C2A207000047C2A207000057C2
  283. A207000067C2A207000077C2A207000087B213047A20C2A20F000054E4455425
  284. C2A207000097C2A2070000A7C2A20B00004454C4C2A20D0000241434B4B21304
  285. 7A20C2A2050000C2A207000073C2A207000083C2A207000093C2A2050000B213
  286. 047A20C2A2050000C2A207000043C2A207000053C2A207000063C2A2050000B2
  287. 13047A20C2A2050000C2A207000013C2A207000023C2A207000033C2A2070000
  288. D2B213047A20C2A2050000C2A207000003C2A2070000E2C2A207000002C2A207
  289. 0000B2B2130B2130378A1C9432D9D20E163233920100000000000001050FA178
  290. BF1D6BB1DBBF13ABB1339201000000000000010EEDA13F2A20DCF16C7D1DBBF1
  291. 6C7D13CE2278BF18B9C1AFE229C2A25BF22D9D208DBF14B2A2B21305DF229363
  292. 2B2130C9432D9D20E16328DBF14B2A293632B2130EF3A193632B21302B300503
  293. 54524254450C2A20DF100B573027302730273027302730273027302730273027
  294. 3027302730273027302730273027302730273024302230233025302630233022
  295. 3024302730273021302130213021302130213021302130273027302030203020
  296. 3020302030203020302030273027302030203020302030203020302030203027
  297. 3027302030203020302030203020302030203027302730203020302030203020
  298. 30203020302030273027302D21302D21302D21302D21302D21302D21302D2130
  299. 2D2130273027302D24302D22302D23302D25302D26302D23302D22302D243027
  300. 3027302730273027302730273027302730273027302730273027302730273027
  301. 302730273027301200705425252454C4C470D9D20E1632339202000000000000
  302. 4403392099900000000000104C5A193632B213055000406494E40540D9D20E16
  303. 32ED2A2472C1C2A209100095F6572702D6F66756F39C2A284E203044943584E2
  304. 03094E405ED2A284E203044943533032ED2A2313C1D503284E205096E6075747
  305. 49632C2A2091000020202020202020202029C2A284E203044943593632B21303
  306. D0005096E607574750D9D20E16323303284E2030B65697D5032D9D201C432D6E
  307. 20203747E16323CE22D6E202037478B9C19C2A2167E1AFE22D9D2084E203094E
  308. 405ED2A2803A2C58C1D6E2020374776BA14563284E203094E40597632DCC02B2
  309. 1305BF22D9D203CE22D6E20203747C2A20F000054E4455425167E1AFE22D9D20
  310. ED2A25D2C1B21305BF22D9D203CE22D6E20203747C2A20B00004454C4167E1AF
  311. E22D9D20C2A20D0000F5F5F5F54563284E203094E40597632DCC02B21305BF22
  312. D9D203CE22D6E20203747C2A20D0000241434B4167E1AFE22D9D20C2A2070000
  313. F584E203094E4059C2A23F2A2C58C176BA14563284E203094E40597632DCC02B
  314. 21305DF22B21305DF22B21305DF22B21305DF2284E203094E405ED2A284E2030
  315. 449435EF532B21304963293632B2130B52003044943530D9D20E16329C2A290D
  316. A1339201000000000000010EEDA1DBBF1ED2A2DA5E1DBBF13392010000000000
  317. 00750DBBF190DA1339201000000000000669DBBF1E97C1DBBF1634E13F2A20DC
  318. F1AE8C193632B2130DA00040D4F4655440D9D20E1632233A25D2C1C2A2051000
  319. 02020202020202023F2A284E2030449435C2A20D000002020202803A284E2030
  320. 4494353CE2284E203094E405C2A20D000017579647279E1AFE22D9D209C2A247
  321. 2C1B21305BF22D9D203CE2284E203094E405C2A20D00008616C647279E1AFE22
  322. 274325BF22D9D203CE2284E203094E405C2A20D000037771607279E1AFE22D9D
  323. 203CE22D13A278BF1313C1AFE225D2C15BF22472C15DF22233A2472C13392020
  324. 0000000000911084E204005B4E47490DA133920200000000000911084E204034
  325. B4E47490DA14563284E204005B4E47497632DCC024563284E204034B4E474976
  326. 32DCC0284E204044257524B21305BF2284E204005C4D4655DF223CE22233A231
  327. 3C1AFE2284E20403405D4655BF22D9D20C2A20D100094C6C6567616C602D6F66
  328. 756233A284E203044943584E20705425252454C4C4B21305DF22B21305DF22B2
  329. 1305DF2293632B2130CB200404425752440D9D20E16323392010000000000001
  330. 201C432D6E2010E6E16327792000000000000000100000000000000010330323
  331. 39201000000000000990D6E2010E6B9DE1D5032D9D20D6E2010E63CE22D13A23
  332. 13C1AFE22D9D20339202000000000009110DBBF190DA1B21305DF2284E204024
  333. 44744578BF1F1AA1DBBF1A23B11C432D6E201007D6E203036F6C6E16323CE22D
  334. 6E201007743A2D9AE1AFE22D9D2078BF1634E1DBBF1E4A205100080000000000
  335. 00000E4A20510008000000000000000614E13CE22D6E2010E678BF1339201000
  336. 00000000001050FA1D6BB176BA1ED2A2D4EB1AFE22599A15DF22AE8C1B21305D
  337. F223CE22D6E2010074B2A2D9AE1AFE22D9D203CE22D6E201007743A2167E1AFE
  338. 22D9D20779201000000000000049000000000000004076BA1B21305BF22D9D20
  339. 78BF13CE22D6E2010E678BF133920100000000000001050FA1D6BB176BA1ED2A
  340. 2D4EB178BF1D6E203036F6C6683A2167E16F8E1AFE22ED2A25BF229C2A25DF22
  341. 84E2030649474DBBF16C7D1D6E2010076C7D1634E1803A20DCF1DBBF1C9432D9
  342. D20E16324E4E193632B2130C9432D9D20E1632654E193632B2130EF3A1B21305
  343. DF22B21305DF22EF532779200000000000000080000000000000000076BA1D6E
  344. 2010E69C2A276BA145632D6E2010E697632DCC02B2130496328DBF1EF5329363
  345. 2B2130FE300402444744540D9D20E16324563284E203024254497632DBBF16C7
  346. D193632B2130140003025442330D9D20E1632339202000000000000010EEDA1D
  347. 6BB133920200000000000001050FA193632B2130750006034F4F425443560D9D
  348. 20E163233920100000000000001050FA178BF1D6BB19C2A290DA1DBBF13ABB13
  349. 39201000000000000010EEDA1E97C193632B2130B70005055E434654550D9D20
  350. E163233920100000000000001050FA178BF1D6BB19C2A290DA1B0BC1DBBF13AB
  351. B1339201000000000000010EEDA1C2A20510001626364656667686DBBF178BF1
  352. C58C1DBBF176BA193632B2130CA000603584F475D46560D9D20E1632E89C184E
  353. 205055E4346545DBBF184E205055E4346545DBBF176BA1803A284E2030449435
  354. 8DBF193632B21301700050D4657454E450D9D20E16323F2A25D2C147A20B2130
  355. 78BF11C432D6E201007D6E20203717D6E20208747E1632D6E20100784E204024
  356. 44744578BF1A23B1DBBF1F1AA1C9432D9D20E1632D6E2020874776BA145632D6
  357. E2020874797632DCC02D6E201007DBBF1E97C1D6E2020371776BA145632D6E20
  358. 20371797632DCC0293632B21301C432D6E203036F6C6D6E2030073656D6E2050
  359. 1646D6F667E1632C9432D9D20E1632D6E20100776BA178BF184E204024447445
  360. 78BF178BF178BF13CE22AFE22D9D203F2A2472C1B21305DF223CE22743A2D9AE
  361. 1DBBF1A23B1D6E203036F6C6D9AE1387E1AFE22D9D203CE2278BF1F88E1AFE22
  362. D9D208DBF154BA1B21305BF22D9D209C2A2DBBF1E97C1B21305DF22D6E205016
  363. 46D6F667EB3A1B21305BF223FBF15DF2293632B21301C432D6E20303686B6E16
  364. 32C9432D9D20E163262BC1301324B2A23C03292CF176BA178BF1D6E20303686B
  365. 6EB3A1DE0323F2A21A4C19B6323FBF1C423293632B21301C432D6E2030D6D667
  366. E163247A20D9D20E1632C9432D9D20E16321C432D6E203047F637E16323CE22D
  367. 6E203047F63733920100000000000001050FA1D6BB178BF1ED2A2167E1DBBF11
  368. 73A2167E1908E1AFE22D9D20ED2A2D13A20A132D6E2010D6D6E203047F63778B
  369. F184E204024447445D6E2010D6D6E203036F6C6EEDA133920100000000000001
  370. 076BA1DBBF1E97C1D6E20501646D6F667EB3A1C42324B2A2B21305BF22D9D20D
  371. 6E203047F6379C2A2B21305DF22EF53293632B21301C432D6E20700727F6D6F6
  372. 4756E1632C9432D9D20E163278BF13CE2278BF184E2050540535E445167E1AFE
  373. 22D9D2054BA1599A1D6E20501646D6F667EB3A18DBF1B21305BF22D9D203CE22
  374. 84E20402444744578BF178BF1743A2D9AE1DBBF1A23B1D6E203036F6C676BA1F
  375. 88E1387E1AFE22D9D20DBBF13CE22D6E20700727F6D6F64756EB3A1AFE22D9D2
  376. 09C2A2E0CF1E97C1D6E20501646D6F667EB3A1B21305BF228DBF15DF22B21305
  377. BF223FBF15DF22B21305DF2293632B21301C432D6E20603616073686B6E16323
  378. 39201000000000000010D6E203036F6C6EEDA1D6E20100776BA178BF178BF13C
  379. E2284E204024447445AFE228DBF15BF22D9D203CE22D6E20700727F6D6F64756
  380. EB3A1AFE22D9D2054BA1D6E20501646D6F667EB3A1B21305BF228DBF15DF223C
  381. E22D6E20100733920100000000000001050FA1D6BB178BF13F2A2167E1DBBF1C
  382. 53A2167E1908E1AFE22D9D20339201000000000000020D6E203036F6C6EEDA1D
  383. 6E20100776BA178BF13CE2284E204024447445AFE228DBF15BF22D9D20ED2A28
  384. 4E2050540535E445E97C1D6E20501646D6F667EB3A1B21305DF22B21305DF22B
  385. 21305DF229C2A22ABF176BA1D6E20603616073686B6EB3A190DA1D6E20603616
  386. 073686B6EB3A1EF532EF53293632B2130D9D20E1632C2A20F30008302D283021
  387. 32302D2132302139302D2139302231302D223130213028362BC130132D6E2030
  388. 3686B6EB3A1C423293632B2130D9D20E1632C2A20320009302D29302131302D2
  389. 131302130243D6E2030D6D667EB3A193632B2130D9D20E1632C2A20320001302
  390. D21302130302D2130302130243D6E2030D6D667EB3A193632B2130D9D20E1632
  391. C2A20B30001302D213029302D29302130302D2130302131302D2131302130283
  392. D6E2030D6D667EB3A193632B2130D9D20E1632C2A20B30001302D213029302D2
  393. 9302130302D2130302131302D213130213028362BC130132D6E20303686B6EB3
  394. A1C42323CE22D6E201007339201000000000000520167E1D6E20100733920100
  395. 0000000000590167E1908E1AFE22D9D203CE22D6E2010079C2A276BA184E2040
  396. 24447445F88E1D6E201007ED2A276BA184E204024447445F88E1387E1D6E2010
  397. 073F2A276BA184E204024447445F1AA1803A2167E1387E1AFE22D9D20D6E2010
  398. 07ED2A276BA1D6E2010073F2A276BA1D6E2010079C2A276BA1E97C1D6E205016
  399. 46D6F667EB3A1B21305DF223CE22D6E2010079C2A290DA184E204024447445F8
  400. 8E1D6E201007ED2A290DA184E204024447445F88E1387E1D6E2010073F2A290D
  401. A184E204024447445F88E1387E1D6E201007803A290DA184E204024447445F1A
  402. A1803A2167E1387E1AFE22D9D20D6E201007ED2A290DA1D6E201007803A290DA
  403. 1D6E2010079C2A290DA1E97C1D6E20501646D6F667EB3A1B21305DF22B21305D
  404. F2293632B2130B2130D6E20300736566C7D1EB3A1EF532EF532EF532D6E20208
  405. 747D6E20203717EF53293632B21309CC005014C4C4D46550D9D20E163247A20B
  406. 213078BF11C432D6E203036F6C6D6E20203717D6E20208747E16323392010000
  407. 000000001203392010000000000008900A132D6E2010E63CE22D6E2010E684E2
  408. 0402444744578BF1A23B1D6E203036F6C6167E1DBBF1743A2D9AE1387E1AFE22
  409. D9D20D6E2010E684E2050D4657454E4D6E2020371776BA145632D6E202037179
  410. 7632DCC02D6E2020874776BA145632D6E2020874797632DCC02B21305DF22C42
  411. 32D6E20208747D6E20203717EF53293632B2130581004005C4D46540D9D20E16
  412. 32803A25D2C184E203094E40584E206034652545351584E203094E4053F2A280
  413. 3A2C58C184E20603465254535151C432D6E2030662737D6E203047F637E16323
  414. CE22803A2063C1D6E203066273784E20402444744578BF14B2A2D5CE1DBBF174
  415. 3A2D9AE1387E1387E1AFE22D9D20D6E203066273784E2050D4657454E4D6E203
  416. 0662737D6E203047F637E97C14BAC178BF13CE224B2A2167E1AFE228DBF15BF2
  417. 2D9D206C7D1D6E2030662737D6E203047F637E97C12ABF184E2040D4B4D46584
  418. E206044943505D465233A2472C1B21305DF22B21305DF22EF53293632B21302D
  419. 1006034652545351560D9D20E163278BF19C2A278BF1C58C1C2A205100016263
  420. 64656667686DBBF14BAC1DBBF1ED2A278BF1C58C1C2A20510001323334353637
  421. 383DBBF14BAC11C432D6E201087D6E201097E16323CE22D6E201087F88E1D6E2
  422. 01097F88E1908E1AFE22D9D20803A2472C1B21305BF22D9D20D6E20108733920
  423. 100000000000001078BF1D6E201097EEDA176BA176BA1B21305DF22EF5329363
  424. 2B21303410040D4B4D46540D9D20E16321C432D6E20208747D6E20203717E163
  425. 2D6E20203717E89C1D6E20208747E89C11C432D6E2030662737D6E203047F637
  426. D6E201047D6E2010A7E16323CE22D6E203066273784E204005B4E474167E1AFE
  427. 22D9D20D6E203047F6374563284E204005B4E47497632DCC02B21305BF22D9D2
  428. 03CE22D6E203066273784E204034B4E474167E1AFE22D9D20D6E203047F63745
  429. 63284E204034B4E47497632DCC02B21305DF22B21305DF224563284E20302425
  430. 449763278BF1D6E203066273784E20402444744578BF178BF1A23B1DBBF1F1AA
  431. 11C432D6E203036F6C6D6E204007479707E1632D6E203047F637DBBF1704D1D6
  432. E20306627374B2A278BF14563284E2050540535E44597632DCC02704D13CE22D
  433. 6E2020874754BA1D9AE1AFE22D9D203CE22D6E2010479C2A2167E1AFE22D9D20
  434. D6E2010A784E20407445D4C484E2050D445550544B21305BF22D9D203CE22D6E
  435. 201047ED2A2167E1AFE22D9D20D6E2030662737339201000000000000010D6E2
  436. 03036F6C6EEDA176BA14563284E2050540535E44597632DCC02B21305BF22D9D
  437. 203CE22D6E201047F88E1AFE22D9D204563284E203024254497632D6E203047F
  438. 637339201000000000000010D6E203036F6C6EEDA190DA14B2A2704D1D6E2030
  439. 36F6C6599A184E20407445D4C484E2050D445550544B21305BF22D9D203CE22D
  440. 6E201047339201000000000000020D5CE1AFE22D9D204563284E203024254497
  441. 63278BF1D6E2010A7D6E20104784E204024447445704D1D6E2010474B2A2704D
  442. 1B21305BF22D9D20D6E2010A784E20407445D4C484E2050D4455505444563284
  443. E203024254497632D6E203047F637D6E20104733920100000000000001090DA1
  444. 78BF184E20407445D4C4D6E203036F6C684E20407445D4C4DBBF190DA184E205
  445. 0D445550544704D1B21305DF22B21305DF22B21305DF22B21305DF22B21305DF
  446. 22EF532EF532EF53293632B21300950050D44555054450D9D20E163278BF1456
  447. 3284E2040D44524C497632B440284E2050353455054493632B21306500050353
  448. 455054450D9D20E16324563284E20503534F4255497632B440293632B2130240
  449. 00407445D4C440D9D20E163278BF1A23B1DBBF1F1AA11C432D6E203036F6C6D6
  450. E2030073656E16328E9204700033920100006000000000000000000100000000
  451. 0000052300000000000000530000000000000005000000000000000902000000
  452. 000000210D6E2030073656FD3326C7D1F1732D9D203FBF14B2A2B21305BF22D9
  453. D20D6E203036F6C6EEDA1B21305DF22EF53293632B2130C21006055E4D4B4D46
  454. 560D9D20E16321C432D6E20208747D6E20203717E1632D6E20203717E89C1D6E
  455. 20208747E89C11C432D6E2030662737D6E203047F637D6E201047D6E2010A7E1
  456. 6324563284E20302425449763278BF1D6E203047F63784E20402444744578BF1
  457. A23B11C432D6E203036F6C6E1632D6E2030662737DBBF1704D1D6E203047F637
  458. 4B2A2704D13CE22D6E203047F63784E204005B4E474167E1AFE22D9D20D6E203
  459. 06627374563284E204005B4E47497632DCC02B21305BF22D9D203CE22D6E2030
  460. 47F63784E204034B4E474167E1AFE22D9D20D6E20306627374563284E204034B
  461. 4E47497632DCC02B21305DF22B21305DF223CE22D6E2020874754BA1D9AE1AFE
  462. 22D9D203CE22D6E2010479C2A2167E1AFE22D9D20D6E2010A784E20407445D4C
  463. 4599A184E2050D4455505444563284E203024254497632D6E203047F637D6E20
  464. 10A7704D1B21305BF22D9D203CE22D6E201047ED2A2167E1AFE22D9D20D6E201
  465. 0A74563284E2050540535E44597632DCC02B21305BF22D9D203CE22D6E201047
  466. F88E1AFE22D9D204563284E203024254497632D6E203047F6373392010000000
  467. 00000010D6E203036F6C6EEDA190DA1D6E203036F6C6599A1704D1D6E203036F
  468. 6C684E20407445D4C484E2050D445550544B21305BF22D9D203CE22D6E201047
  469. 339201000000000000020D5CE1AFE22D9D204563284E20302425449763278BF1
  470. D6E201047D6E2010A784E204024447445704D1D6E2010A74B2A2704D1B21305B
  471. F22D9D204563284E20302425449763278BF1D6E2030662737D6E203036F6C670
  472. 4D1D6E203047F637D6E20104733920100000000000001090DA178BF184E20407
  473. 445D4C4D6E2010A784E20407445D4C490DA1D6E203036F6C684E20407445D4C4
  474. 90DA184E2050D445550544704D1B21305DF22B21305DF22B21305DF22B21305D
  475. F22B21305DF22EF532EF532EF53293632B213037500403405D46540D9D20E163
  476. 2FDAA1683A23CE22D13A2313C1AFE22D9D20599A1DBBF1599A1DBBF1B21305DF
  477. 2284E20603554142534848DBF1C2A2031000D49702D6F667563F2A284E203044
  478. 94352ABF184E20603584F475D4652ABF184E2040D4B4D46584E206044943505D
  479. 46584E20705425252454C4C493632B21307F00050745445D46550D9D20E16321
  480. C432D6E2010E6E1632D6E2010E66C7D1DBBF1D6E2010E66C7D1DBBF1EF532936
  481. 32B213006000703534F42554D46570D9D20E16323CE2284E203005C49584E204
  482. 044054584279E1AFE22D9D203FBF184E20503534F42554B21305BF22D9D20599
  483. A184E2060355414253484E0CF1E0CF13FBF1B21305DF2293632B2130CA000603
  484. 5541425348460D9D20E1632AAF028DBF19C2A24563284E203005C49597632B44
  485. 021C432D6E2020C613D6E203036F6C6E1632FDAA1D6E203036F6C6EEDA147A20
  486. 54BA154BA1B21301C432D6E2020C623D6E204026563747E1632D6E203036F6C6
  487. 84E205014C4C4D46584E206035F42545D46578BF18B9C13CE22D6E203036F6C6
  488. 4B2A2D5CE1AFE22D9D20C9432D9D20E1632B9DE193632B2130C9432D9D20E163
  489. 2EBBE193632B2130B21305BF22D9D20C9432D9D20E1632CFCE193632B2130C94
  490. 32D9D20E1632D5CE193632B2130B21305DF221C432D6E20208747D6E20203717
  491. D6E2010E6D6E20203613D6E20203623E16323C032D6E20208747D6E2010E66C7
  492. D1D6E20203717D6E2010E66C7D12ABF184E2040D4B4D465D6E2010E684E20604
  493. 6562657763778BF1E89C1DBBF18DBF178BF184E2050D4657454E48DBF18B9C13
  494. 3920200000000000002050FA1DBBF184E206034F4F425443578BF17792000000
  495. 00000000540000000000000054090DA1F1AA1339201000000000000010EEDA18
  496. 72B184E2030254423DBBF1D6E203036F6C64B2A2D5CE184E204034B4E47484E2
  497. 04005B4E474EF3A184E206034F4F425443590DA1F1AA13392010000000000000
  498. 10EEDA19C2A276BA1872B184E203025442376BA176BA1D6E203036F6C6EEDA17
  499. 8BF1599A184E20503534550544E0CF1E0CF1339201000000000000210D6E2030
  500. 36F6C6EEDA1D6E203036F6C684E20703534F42554D4653CE229C2A2AFE22D9D2
  501. 078BF1B0BC1C2A2090000020276BA1233A284E2030449435B21305DF223CE227
  502. 8BF1D6E2020C613D6E20203613EB3A1AFE22D9D20C53A25D2C13CE2278BF1D6E
  503. 2020C623D6E20203623EB3A1AFE22D9D2045632D6E2020C62397632DCC022ABF
  504. 13CE2284E203005C4959C2A2167E1AFE22D9D202ABF184E20603584F475D465B
  505. 21305DF22ED2A2387C145632D6E20402656374797632DCC02B21305BF228DBF1
  506. 5DF22B21305BF22D9D2045632D6E2020C62397632DCC02C53A2472C1B21305DF
  507. 22D6E2010E69C2A290DA178BF145632D6E2010E697632DCC023CE22F88E1AFE2
  508. 2D9D20C53A2472C1B21305DF2284E206055E4D4B4D46584E20503534550544DE
  509. 032C53A2313C19B632EF532D6E204026563747A59C18DBF1D6E2020C623EF532
  510. EF5324563284E203005C495976329C2A28350293632B21303B6006035F42545D
  511. 46560D9D20E16321C432D6E20208747D6E20203717E163247A20B21309C2A233
  512. 92010000000000002203013278BF1C4232339201000000000000120387C178BF
  513. 11C432D6E2030878647D6E2030378647E16329C2A2D6E202087478B9C10A132D
  514. 6E2010E6D6E2030878647D6E20208747D6E2010E66C7D178BF1E89C18DBF13CE
  515. 2278BF1339201000000000000810D5CE1AFE22D9D208DBF13392010000000000
  516. 00810B21305DF229C2A276BA178BF1D6E2030878647DBBF16C7D1E0CF176BA19
  517. 2CF1D6E2030378647DBBF12ABF16C7D1D6E20203717D6E2010E66C7D176BA170
  518. 4D145632D6E203037864797632DCC02704D145632D6E203087864797632DCC02
  519. C423245632D6E2020874797632DCC0245632D6E2020371797632DCC02C2A2074
  520. 0006302136302930213330283021343027302135302230223030233021302130
  521. 2132362BC130132D6E20208747D6E20308786473F2A2A9CF16C7D176BA145632
  522. D6E2020874797632DCC02D6E20203717D6E2030378647E0CF16C7D176BA14563
  523. 2D6E2020371797632DCC02C4232D6E20208747D6E20203717EF532EF53293632
  524. B2130053006046562657763760D9D20E16321C432D6E2010E6E163278BF1E89C
  525. 184E205055E4346545DBBF184E205055E4346545DBBF176BA184E203005C495B
  526. 0BC1C2A20700000276BA1D6E2010E6B0BC176BA1C2A20700000276BA1DBBF176
  527. BA1C2A20700000276BA1D13A284E2030449435EF53293632B2130BE000306494
  528. 743047A2047A20E1B20F100080000800000000C3424242C300E1B20F10008000
  529. 08000000C366242764C700E1B20F1000800008000000C143426624E700E1B20F
  530. 1000800008000000E7A5242424E700E1B20F1000800008000000E7A5662424E7
  531. 00E1B20F1000800008000000C366246624E700B213047A20E1B20F1000800008
  532. 00000000008181810000E1B20F10008000080000000081C3C0830000E1B20F10
  533. 0080000800000000808181C30000E1B20F10008000080000000042C3C3C30000
  534. E1B20F1000800008000000004281C3C30000E1B20F10008000080000000081C3
  535. 81C30000B2130B21308D1006044943505D46560D9D20E1632E89C11C432D6E20
  536. 30662737D6E203047F637E1632634E1D6E203066273784E206034F4F4254435E
  537. 89C1DBBF1E97C1C53A2EEDA1779200000000000000070000000000000007090D
  538. A1E4A20510008000000000000000E4A20510008000000000000000614E13CE22
  539. D6E203066273778BF133920100000000000001050FA1D6BB176BA1ED2A2D4EB1
  540. AFE22599A15DF22AE8C1D6E203047F63784E20402444744578BF1F1AA1DBBF1A
  541. 23B11C432D6E201007D6E203036F6C6E1632634E1D6E203047F63784E206034F
  542. 4F4254435E89C1DBBF1E97C1C53A2EEDA1779200000000000000070000000000
  543. 000007090DA12ABF1E4A20510008000000000000000E4A205100080000000000
  544. 00000614E13CE22D6E203047F63778BF133920100000000000001050FA1D6BB1
  545. 76BA1ED2A2D4EB1AFE22599A15DF22AE8C13CE22D6E203047F63778BF1339201
  546. 00000000000001050FA1D6BB176BA1ED2A2D4EB178BF1D6E203036F6C6683A21
  547. 67E16F8E1AFE22ED2A25BF229C2A25DF2284E2030649474DBBF16C7D1D6E2010
  548. 076C7D1DBBF1C9432D9D20E16324E4E193632B2130C9432D9D20E1632654E193
  549. 632B2130EF3A1EF532EF5328DBF193632B2130F83004007C6169740D9D20E163
  550. 2916C14563284E204064C4743597632DCC0284E20503545242544B7FC1456328
  551. 4E203024254497632DCC02C2A203700023724405458472037205C495720372D4
  552. 4524C4720372540535E4457203723534F425547223537205B4E4747293537234
  553. B4E47472130273B7FC130132DCC02C423247A20E4A20510004F3010146030040
  554. 0E4A20510000000000000000000B2130F76C1E4A20510003800000000000000E
  555. 4A20510000400000000000000614E1634E1DCC0247A20E4A2051000000000000
  556. 0000000E4A20510000000000000000000B21300F2E184E2040442575243C032C
  557. 2A20D0000F5F5F5F54563284E203094E40597632DCC02ED2A2472C184E204064
  558. 94E40584E2040D4F46554AAF028DBF1DE0329C2A2313C19B63284E204064C474
  559. 35F76C1C2A2096000B764C4743502440545840205C495022425440294E40502D
  560. 44524C4023534F425540205B4E4740234B4E47402540535E445D7B7FC1EFE029
  561. 3632B21302C63"
  562. END_ASC
  563.  
  564. And for the HP28:
  565.  
  566. --------------------chess.28----------------------------------
  567. BEGIN_SRC chess.28s
  568. The program follows:
  569. On the HP-28 remember to clear flags 35 and 36 before playing since it
  570. requires numeric evaluation to work.
  571.  
  572. ERRBELL:<< 440 .1 BEEP
  573.     >>
  574. [A2BB]
  575.  
  576. PPAR:    { (-104,2) (32,33) constant 1 (0,0) }
  577. [A11]
  578.  
  579. DRWB:    << 2 SF
  580.     "{[(1,2)(2,3)(3,2)[(1,2)(2,2)(3,2)(2,3)(2,4)(3,4)[(1,2)(2,2)(3,2)(2,3)(2
  581. ,4)[(1,2)(2,2)(3,2)(1,3)(2,3)(3,3)(1,4)(3,4)[(1,2)(2,2)(3,2)(2,3)(1,4)(3,4)[(1,2
  582. )(2,2)(3,2)(1,3)(2,3)(3,3)(2,4" STR-> 21 -> pict n
  583.           << CLLCD (1,1)
  584.             WHILE 99 n >= INPUT 2 FS? AND
  585.         REPEAT n BDGT DUP ABS SWAP SIGN -> p col
  586.           <<
  587.         IF p 0 SAME
  588.             THEN
  589.           IF n DUP 10 / IP + 2 MOD
  590.           THEN 1 3
  591.             FOR j 2 4
  592.               FOR k DUP j k R->C + PIXEL
  593.               NEXT
  594.             NEXT
  595.           END
  596.         ELSE
  597.           IF p 7 SAME
  598.           THEN (-20,2) +
  599.           ELSE DUP 'pict' p GET
  600.             IF col -1 SAME
  601.             THEN NEG SWAP (4,6) + SWAP
  602.             END DUP ROT CON + ARRY-> LIST-> SWAP
  603.             START PIXEL
  604.             NEXT
  605.           END
  606.         END
  607.           >> (4,0) + n 1 + 'n' STO
  608.         END DROP
  609.       >>
  610.       IF 2 FS?
  611.       THEN FINP
  612.       END
  613.     >>
  614. [318B]
  615.  
  616. DIS:    << DISS LCD-> AND ROT ROT DISP LCD-> OR ->LCD
  617.     >>
  618. [7DEB]
  619.  
  620. DISS isn't a program, it is really a string type the following exactly as is:
  621. DISS:    << "" 1 105 START 0 CHR + NEXT 106 137 START 255 CHR + NEXT DUP + DUP +
  622.     >> EVAL 'DISS' STO
  623. The checksum is [0] for the created DISS object.
  624.  
  625. INPUT:    <<
  626.       WHILE KEY
  627.       REPEAT -> st
  628.         <<
  629.           IF st SIZE 1 SAME
  630.           THEN INP 2 4 SUB st + DUP 'INP' STO 1 DIS
  631.           ELSE
  632.         IF st "ENTER" SAME
  633.         THEN 2 CF
  634.         END
  635.           END
  636.         >>
  637.       END
  638.     >>
  639. [811D]
  640.  
  641. STBRD:    "[7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 4 2 3 5 6 3 2 4 7 7 1 1 1 1 1
  642. 1 1 1 7 7 0 0 0 0 0 0 0 0 7 7 0 0 0 0 0 0 0 0 7 7 0 0 0 0 0 0 0 0 7 7 0 0 0 0 0
  643. 0 0 0 7 7 -1 -1 -1 -1 -1 -1 -1 -1 7 7 -4 -2 -3 -5 -6 -3 -2 -4 7 7 7 7 7 7 7 7 7
  644. 7 7 7 7 7 7 7 7 7 7 7"
  645. [6BC7]
  646.  
  647. MOVE:    << 6 CF
  648.       IF INP "QUIT" ==
  649.       THEN 1 SF CLMF
  650.       ELSE
  651.         IF INP "HALT" ==
  652.         THEN HALT
  653.         ELSE
  654.           IF INP "SWAP" ==
  655.           THEN
  656.         << 'BRD' SWAP GET
  657.           IF DUP 7 <>
  658.           THEN NEG
  659.           END
  660.         >> -> fix
  661.         << 20 50
  662.           FOR j 1 8
  663.             FOR k 119 j k + DUP ROT ROT - DUP2 fix EVAL SWAP fix EVAL
  664. 'BRD' DUP ROT 5 PICK SWAP PUT 4 PICK ROT PUT DROP2
  665.             NEXT 10
  666.           STEP
  667.           IF EPSNT
  668.           THEN 119 'EPSNT' STO-
  669.           END
  670.           IF 5 DUP FS?
  671.           THEN CF
  672.           ELSE SF
  673.           END 6 SF CKNG PKNG 'CKNG' STO 'PKNG' STO SCORE NEG 'SCORE' STO
  674. MTBL NEG 'MTBL' STO
  675.         >>
  676.           ELSE PLMV
  677.           END
  678.           IF 6 FS?
  679.           THEN CPMV
  680.           ELSE "Illegal move" 4 DIS ERRBELL
  681.           END
  682.         END
  683.       END
  684.     >>
  685. [AD3B]
  686.  
  687. FINP:    << 2 SF
  688.       WHILE 2 FS?
  689.       REPEAT INPUT
  690.       END
  691.     >>
  692. [2030]
  693.  
  694. MVGEN:    << 3 CF {} DUP -> p sq xt
  695.       << p BDGT DUP SIGN SWAP ABS
  696.         << xt + 'xt' STO p SWAP R->C sq + 'sq' STO
  697.         >> -> col pce admov
  698.         <<
  699.           << p + DUP BDGT DUP DUP DUP
  700.         IF
  701.         THEN 3 SF
  702.         END
  703.         IF 7 <> SWAP SIGN col <> AND
  704.         THEN
  705.           IF DUP NOT
  706.           THEN DROP i
  707.           ELSE 1 SWAP R->C
  708.           END admov EVAL
  709.         ELSE DROP2
  710.         END
  711.           >> -> chk
  712.           <<
  713.         << STR->
  714.           START 0
  715.             DO OVER + DUP chk EVAL
  716.             UNTIL 3 FS?C
  717.             END DROP2
  718.           NEXT
  719.         >> -> mmv
  720.         << {
  721.           <<
  722.             << -> tos
  723.               <<
  724.             IF tos 10 / IP DUP 2 SAME SWAP 9 SAME OR
  725.             THEN 2 5
  726.               FOR m tos DUP BDGT m col * 10 + SWAP R->C admov EVAL
  727.               NEXT 0
  728.             ELSE tos 1
  729.             END
  730.               >>
  731.             >> -> promote
  732.             <<
  733.               << DUP
  734.             IF DUP EPSNT SAME
  735.             THEN i NEG admov EVAL DROP
  736.             ELSE
  737.               IF BDGT DUP DUP 7 <> SWAP SIGN col + NOT AND
  738.               THEN SWAP
  739.                 IF promote EVAL
  740.                 THEN 1 ROT R->C admov EVAL
  741.                 ELSE DROP
  742.                 END
  743.               ELSE DROP2
  744.               END
  745.             END
  746.               >> -> capchk
  747.               << 10 col * p + DUP DUP
  748.             IF BDGT
  749.             THEN DROP
  750.             ELSE
  751.               IF promote EVAL
  752.               THEN i admov EVAL
  753.               ELSE DROP
  754.               END
  755.               IF p 10 / IP DUP 3 SAME SWAP 8 SAME OR
  756.               THEN 20 col * p + DUP
  757.                 IF BDGT
  758.                 THEN DROP
  759.                 ELSE 2 EPSNT R->C admov EVAL
  760.                 END
  761.               END
  762.             END 1 DUP2 + capchk EVAL - capchk EVAL
  763.               >>
  764.             >>
  765.           >>
  766.           << "8 -8 12 -12 19 -19 21 -21 1 8" STR->
  767.             START chk EVAL
  768.             NEXT
  769.           >>
  770.           << "9 -9 11 -11 1 4" mmv EVAL
  771.           >>
  772.           << "1 -1 10 -10 1 4" mmv EVAL
  773.           >>
  774.           << "1 -1 9 -9 10 -10 11 -11 1 8" mmv EVAL
  775.           >>
  776.           << "1 -1 9 -9 10 -10 11 -11 1 8" STR->
  777.             START chk EVAL
  778.             NEXT
  779.             IF p 25 SAME p 95 SAME OR
  780.             THEN
  781.               IF p 1 + BDGT NOT p 2 + BDGT NOT AND p 3 + BDGT ABS 4 SAME
  782. AND
  783.               THEN p 2 + p 3 + p 1 + R->C admov EVAL
  784.               END
  785.               IF p 1  - BDGT NOT p 2 - BDGT NOT AND p 3 - BDGT NOT AND p
  786. 4 - BDGT ABS 4 SAME AND
  787.               THEN p 2 - p 4 - p 1 - R->C admov EVAL
  788.               END
  789.             END
  790.           >> } pce GET EVAL
  791.         >>
  792.           >>
  793.         >> xt sq
  794.       >>
  795.     >>
  796. [79AD]
  797.  
  798. BDGT:    << 'BRD' SWAP GET
  799.     >>
  800. [FE0E]
  801.  
  802. ALLMV:    << {} DUP -> col sq xt
  803.       << 21 98
  804.         FOR n
  805.           IF n BDGT DUP SIGN col SAME SWAP 7 <> AND
  806.           THEN n MVGEN sq + 'sq' STO xt + 'xt' STO
  807.           END
  808.         NEXT xt sq
  809.       >>
  810.     >>
  811. [687C]
  812.  
  813. PLMV:    << 4 CF INP CVRTSQ INP 3 4 SUB CVRTSQ -> frs tos
  814.       <<
  815.         IF 4 FC? frs BDGT DUP 0 > SWAP 7 <> AND AND
  816.         THEN frs MVGEN frs tos R->C POS DUP
  817.           IF 0 SAME
  818.           THEN DROP
  819.           ELSE GET frs tos R->C MKMV 6 SF
  820.           END
  821.         END
  822.       >>
  823.     >>
  824. [9583]
  825.  
  826. CVRTSQ:    << DUP 1 DUP SUB "ABCDEFGH" SWAP POS SWAP 2 DUP SUB "12345678" SWAP POS
  827. -> x y
  828.       <<
  829.         IF x NOT y NOT OR
  830.         THEN 4 SF
  831.         ELSE x 10 DUP y * + +
  832.         END
  833.       >>
  834.     >>
  835. [DA90]
  836.  
  837. MKMV:    << -> xt sq
  838.       << sq C->R xt C->R -> frs tos t z
  839.         <<
  840.           IF frs PKNG SAME
  841.           THEN tos 'PKNG' STO
  842.           ELSE
  843.         IF frs CKNG SAME 
  844.         THEN tos 'CKNG' STO
  845.         END
  846.           END 'BRD' DUP frs BDGT DUP DUP SIGN SWAP ABS -> col ptyp
  847.           << tos SWAP PUT frs 0 DUP 'EPSNT' STO PUT
  848.             IF xt i <>
  849.             THEN
  850.               IF t 1 SAME
  851.               THEN z GTML MTUPD
  852.               ELSE
  853.                 IF t 2 SAME
  854.                 THEN frs 10 col * + 'EPSNT' STO
  855.                 ELSE
  856.               IF t NOT
  857.               THEN 'BRD' tos 10 col * - 0 PUT col NEG GTML MTUPD
  858.               ELSE
  859.                 IF t 20 >
  860.                 THEN 'BRD' DUP z t BDGT PUT t 0 PUT
  861.                 ELSE z GTML MTUPD 'BRD' tos t 10 - DUP GTML col GTML
  862. SWAP - MTUPD PUT
  863.                 END
  864.               END
  865.                 END
  866.               END
  867.             END
  868.           >>
  869.             >>
  870.           >>
  871.     >>
  872. [B441]
  873.  
  874. MTUPD:    << DUP 'MTBL' STO+ SCUPD
  875.     >>
  876. [3E44]
  877.  
  878. SCUPD:    << 'SCORE' STO+
  879.     >>
  880. [760]
  881.  
  882. GTML:    << DUP SIGN SWAP ABS -> col pce
  883.       << [1 3.25 3.5 5 9 120 ] pce
  884.         IFERR GET
  885.         THEN DROP2 0
  886.         ELSE col *
  887.         END
  888.       >>
  889.     >>
  890. [7C24]
  891.  
  892. UNMKMV:    << -> xt sq
  893.       << sq C->R xt C->R -> frs tos t z
  894.         << 'BRD' DUP tos BDGT DUP SIGN -> col
  895.           << frs SWAP PUT tos 0 PUT
  896.         IF tos PKNG SAME
  897.         THEN frs 'PKNG' STO
  898.         ELSE
  899.           IF tos CKNG SAME
  900.           THEN frs 'CKNG' STO
  901.           END
  902.         END
  903.         IF xt i <>
  904.         THEN
  905.           IF t 1 SAME
  906.           THEN z GTML NEG MTUPD 'BRD' tos z PUT
  907.           ELSE
  908.             IF t 2 SAME
  909.             THEN z 'EPSNT' STO
  910.             ELSE
  911.               IF t NOT
  912.               THEN 'BRD' tos 10 col * - col NEG PUT col GTML MTUPD
  913.               ELSE
  914.             IF t 20 >
  915.             THEN 'BRD' DUP t z BDGT PUT z 0 PUT
  916.             ELSE 'BRD' DUP frs col PUT tos t 10 - DUP GTML z GTML -
  917. col GTML - MTUPD PUT
  918.             END
  919.               END
  920.             END
  921.           END
  922.         END
  923.           >>
  924.         >>
  925.       >>
  926.     >>
  927. [3D58]
  928.  
  929. CPMV:    << MAXR -1 SEARCH DROP "My move" 3 DIS DUP2 SHOWMV MKMV ERRBELL
  930.     >>
  931. [A946]
  932.  
  933. GETMV:    << -> n
  934.       << n GET SWAP n GET SWAP
  935.       >>
  936.     >>
  937. [BB18]
  938.  
  939. SCOREMV:<< "PLY = " PLY ->STR + "." + SWAP ->STR + 3 DIS
  940.       IF PLY 2 ==
  941.       THEN DROP2 SCORE
  942.       ELSE NEG SEARCH ROT ROT DROP2
  943.       END
  944.     >>
  945. [8F08]
  946.  
  947. SHOWMV:    << C->R UNCVT SWAP UNCVT SWAP + 4 DIS DROP
  948.     >>
  949. [106B]
  950.  
  951. SEARCH:    << 1 'PLY' STO+ -> l1 col
  952.       << MAXR col * { i i } -> l2 best
  953.         << col ALLMV SORTMV DUP SIZE
  954.           IF col 0 >
  955.           THEN
  956.         << >=
  957.         >>
  958.         << <
  959.         >>
  960.           ELSE
  961.         << <=
  962.         >>
  963.         << >
  964.         >>
  965.           END -> xt sq n c1 c2
  966.         <<
  967.           DO xt n GET sq n GET DUP2 MKMV
  968.             IF PLY 1 SAME
  969.             THEN DUP2 SHOWMV
  970.             END DUP C->R SWAP DROP DUP MVGEN DROP SIZE 200 / SWAP COORDS
  971. DUP (4.5,4.5) - ABS 10 * INV RD2 SWAP col 0 > CKNG PKNG IFTE COORDS - ABS 10 * 1
  972. + INV RD2 + + col * DUP NEG SCUPD ROT ROT l2 col n SCOREMV
  973.             IF PLY 1 SAME
  974.             THEN DUP ->STR "mv sc " SWAP + 2 DIS
  975.             END
  976.             IF DUP l1 c1 EVAL
  977.             THEN 8 CF
  978.               IF DUP l2 c2 EVAL
  979.               THEN 'l2' STO DUP2 2 ->LIST 'best' STO
  980.               ELSE DROP
  981.               END
  982.                 ELSE 'l2' STO 8 SF
  983.                 END n 1 - DUP 'n' STO
  984.                 IF NOT
  985.                 THEN 8 SF
  986.                 END UNMKMV SCUPD
  987.               UNTIL 8 FS?
  988.             END
  989.           >> best LIST-> DROP l2
  990.         >>
  991.         >> 'PLY' 1 STO-
  992.     >>
  993. [322]
  994.  
  995. SORTMV:    << -> xt sq
  996.       << {} 1 22
  997.         START DUP
  998.         NEXT 21 ->LIST DUP -> xht sht
  999.             << 1 xt SIZE
  1000.           FOR n xht xt n GET DUP C->R DROP
  1001.             IF DUP 18 >
  1002.             THEN DROP 18
  1003.             END 1 + DUP xht SWAP GET ROT + OVER sht SWAP DUP2 GET sq n GET +
  1004. PUT 'sht' STO PUT 'xht' STO
  1005.           NEXT 'xt' STO 'sq' STO "6 16 9 13 8 14 7 15 2 20 3 1 1 12" STR->
  1006.           START xt xht 3 PICK GET + 'xt' STO sq sht ROT GET + 'sq' STO
  1007.           NEXT xt sq
  1008.         >>
  1009.       >>
  1010.     >>
  1011. [5CF9]
  1012.  
  1013. UNCVT:    << 10 / DUP IP 1 - ->STR SWAP FP 10 * "ABCDEFGH" SWAP DUP SUB SWAP +
  1014.     >>
  1015. [4BED]
  1016.  
  1017. COORDS:    << 10 / DUP IP 1 - SWAP FP 10 * R->C
  1018.     >>
  1019. [D97D]
  1020.  
  1021. RD2:    << 100 * IP 100 /
  1022.     >>
  1023. [16DD]
  1024.  
  1025. PLAY:    << STBRD STR-> 'BRD' STO
  1026. "0'PLY'0'MTBL'0'EPSNT'0'SCORE'25'PKNG'95'CKNG'1 6" STR->
  1027.       START STO
  1028.       NEXT "1 3 4 5 1 4" STR->
  1029.       START CF
  1030.       NEXT
  1031.       DO "    " 'INP' STO DRWB MOVE
  1032.       UNTIL 1 FS?
  1033.       END
  1034.       "{PLY BRD INP MTBL SCORE PKNG CKNG EPSNT}" STR-> PURGE
  1035.     >>
  1036. [482E]
  1037. END_SRC
  1038. --------------------chess.28----------------------------------
  1039.  
  1040. --
  1041.  
  1042.